iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
AI & Data

邁向成為語言資料科學家的偉大航道系列 第 17

【NLP】Day 17: 每天成為更好的自己!神經網路也是!深度學習模型 GRU

  • 分享至 

  • xImage
  •  

今天沒有引言,但是有梗圖

前天的文章介紹了基本的循環神經網路RNN,但RNN的致命缺點是容易導致梯度下降或是梯度爆炸。為了要解決這個問題,必須在以下兩點有所突破:

  1. 優化梯度演算法
  2. 在神經網路的節點中,設計較好的激勵函數(activation function)

昨天的文章所介紹的長短期記憶神經網路模型選擇往第二點的方向突破,在神經網路節點中加入了輸入閥(input gate)遺忘閥(forget gate)、以及輸出閥(output gate),這個做法可以有效地解決循環神經網路模型容易梯度下降或是梯度爆炸的缺點,但由於長短期記憶模型加入的參數過多,若透過大量的資料進行訓練,可能會導致模型運算量過大。那電腦科學家們為了降低運算成本以及減少佔用記憶體,同時又要維持相同的模型表現,於是就發明了GRU(Gate Recurrent Unit)

GRU

GRU 也是循環神經網路 RNN 的另外一種變體,因此網路架構也跟 RNN 相差無幾,GRU 同樣有輸入層、隱藏層、以及輸出層,最大的差別只是在於其中的節點運算。

我們可以回想一下,在LSTM中,總共有三個門閥對資料進行「把關」,分別為輸入閥遺忘閥,以及輸出閥;而在GRU中,同樣也有門閥,功能也是完全相同(皆為篩選記憶),只是三個變成了兩個,分別為重置閥(reset gate)以及更新閥,由於減少了門閥數量,因此運算量相對於LSTM來說,減輕了不少。

GRU的內部結構

跟LSTM相同,我們先從GRU的兩個門閥開始,圖中的 https://chart.googleapis.com/chart?cht=tx&chl=r 是重置閥,https://chart.googleapis.com/chart?cht=tx&chl=z 則為更新閥,兩者在各自的權重 https://chart.googleapis.com/chart?cht=tx&chl=W 乘上輸入 https://chart.googleapis.com/chart?cht=tx&chl=x%5Et 以及隱藏層 https://chart.googleapis.com/chart?cht=tx&chl=h%5E%7Bt-1%7D 後,皆會經過激勵函數將數值變換成0-1之間的數字,篩選模型記憶的資訊,也就是說,這些數值代表節點對資訊的記憶程度。我們在這裡將 https://chart.googleapis.com/chart?cht=tx&chl=rhttps://chart.googleapis.com/chart?cht=tx&chl=z 計算出來之後,先放著備用。

接下來讓我們進入節點的設計,前面有說到 GRU 從原本 LSTM 的三個門閥變成兩個門閥,所以以下會分成兩個階段來講解。

重置閥

話不多說,先上圖!⊙ 代表矩陣相乘,⊕ 代表矩陣相加

請允許我把這部分用不到的路徑先遮蓋起來,這樣比較不容易迷路。

在這裡,我們會用到之前所計算的重置閥 https://chart.googleapis.com/chart?cht=tx&chl=r(reset gate)。首先,當我們得到了重置閥r之後,要透過重置閥來「重置」上一個隱藏層傳來的資訊:

接著 https://chart.googleapis.com/chart?cht=tx&chl=h%5E%7B%7Bt-1%7D%5E%5Cprime%7D 與輸入 https://chart.googleapis.com/chart?cht=tx&chl=x%5Et以及權重相乘後,再加入 https://chart.googleapis.com/chart?cht=tx&chl=tanh 的激勵函數,將資料壓到 [-1, 1] 之間,就會得到 https://chart.googleapis.com/chart?cht=tx&chl=h%5E%5Cprime

  • 代表意義https://chart.googleapis.com/chart?cht=tx&chl=h%5E%5Cprime 主要是透過 https://chart.googleapis.com/chart?cht=tx&chl=r 來篩選上一層隱藏層 https://chart.googleapis.com/chart?cht=tx&chl=h%5E%7Bt-1%7D 所傳來的資訊,接著結合本節點的輸入 https://chart.googleapis.com/chart?cht=tx&chl=x%5Et 。以上動作都是為了將 https://chart.googleapis.com/chart?cht=tx&chl=h%5E%5Cprime 加入到這個節點的隱藏狀態。功能類似於LSTM的選擇記憶階段。

更新閥

透過這個更新閥,就可以同時做到記憶以及遺忘的功能。在這裡,我們會用到之前所計算的更新閥 https://chart.googleapis.com/chart?cht=tx&chl=z(update gate),在這裡的計算是:

其中更新閥的數值,因為sigmoid激勵函數的緣故,數值會介在[0, 1]之間,這代表GRU在這一層需要記憶的程度。越接近1代表記憶的資訊越多;越接近0代表遺忘的資訊越多。 不知你是否發現到,只要單單透過一個門閥,就可以同時控制遺忘以及選擇記憶,相對於LSTM要用多個門閥才能達到相同的效果,這就是為什麼GRU的計算成本可以低於LSTM的原因。

  • 代表意義
    • 「忘記」上一層隱藏狀態所帶來的資訊比例,主要是要放掉上一層隱藏層帶來的不重要資訊,功能接近於LSTM的遺忘閥(forget gate)。
    • 表示從 https://chart.googleapis.com/chart?cht=tx&chl=h%5E%5Cprime 中所要選擇記憶的比例。
    • 兩者結合起來就是忘記上一層隱藏層 https://chart.googleapis.com/chart?cht=tx&chl=h%5E%7Bt-1%7D 所傳下來的資訊,並從當節點所接收的輸入資料中進行選擇性記憶。

問題與討論

因為GRU用了比較少門閥的緣故,所以相對於長短期記憶LSTM來說,訓練的時間較短,佔用的記憶體也較少。只是模型表現上,兩者其實是差不多的。所以如果考量到訓練時間還有運算資源的限制的話,鐵定是毫不猶豫地選擇GRU的啦!

不過就像在Day 15: 圓圓圈圈圓圓~深度學習:循環神經網路 RNN中所說,這仍然無法解決模型無法理解下文與上文之間關係的問題。那人工智慧學家又是怎麼解決這個問題的呢?就讓我們等到明天介紹BiLSTM的文章再來聊吧!

若你有空,也歡迎來看看其他文章:

➡️ 【NLP】Day 16: 跟你我一樣選擇性記憶的神經網路?深度學習:長短期記憶 LSTM
➡️ 【NLP】Day 15: 圓圓圈圈圓圓~深度學習:循環神經網路 RNN
➡️ 【NLP】Day 14: 神經網路也會神機錯亂?不,只會精神錯亂...深度學習:前饋神經網路


上一篇
【NLP】Day 16: 跟你我一樣選擇性記憶的神經網路?深度學習:長短期記憶 LSTM
下一篇
【NLP】Day 18: 沒有什麼是一條神經網路解決不了的,如果有,就兩條!深度學習:BiLSTM
系列文
邁向成為語言資料科學家的偉大航道30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言